iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
影片教學

文組生的Python爬蟲之旅系列 第 21

Day 21 BeautifulSoup模組三

  • 分享至 

  • xImage
  •  

今天的影片內容為介紹分析項目清單與表格文件的方法
而在影片的後半部,會帶大家離開新手村,爬取一個真正的網頁!!!/images/emoticon/emoticon24.gif

Yes

以下為影片中有使用到的程式碼

<!doctype html>
<!-- 請將此檔案儲存成bs4_HTML2.html -->
<html lang="zh-tw">
<head>
    <meta charset="utf-8">
	<title>資料輸出2</title>
</head>
<body>
<h1>水母在生物學中的分類</h1>
<p>擷取自<a href="https://zh.wikipedia.org/wiki/%E6%B0%B4%E6%AF%8D">維基百科</a></p>
<br>
<h2>科學分類</h2>
<ol>
    <li>界--動物界</li>
	<li>亞界--真後生動物亞界</li>
	<li>演化支--副同源異形基因動物</li>
	<li>演化支--浮浪幼蟲樣動物</li>
	<li>門--刺胞動物門</li>
</ol>
   
</body>
</html>
<!doctype html>
<!-- 請將此檔案儲存成bs4_HTML3.html -->
<html lang="zh-tw">
<head>
    <meta charset="utf-8">
	<title>資料輸出2</title>
</head>
<body>
<h1>水母在生物學中的分類1</h1>
<p>擷取自<a href="https://zh.wikipedia.org/wiki/%E6%B0%B4%E6%AF%8D">維基百科</a></p>
<br>

<table border="1">

<thead>
    <tr><th>科學分類</th><th>類別名稱</th></tr>
</thead>

<tbody>
    <tr><td>界</td><td>動物界</td></tr>
    <tr><td>亞界</td><td>真後生動物亞界</td></tr>
    <tr><td>演化支</td><td>副同源異形基因動物</td></tr>
    <tr><td>演化支</td><td>浮浪幼蟲樣動物</td></tr>
    <tr><td>門</td><td>刺胞動物門</td></tr>
</tbody>

</table>


</body>
</html>
#爬取項目清單文件
#請將C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改為bs4_HTML2.html在您電腦中的路徑
import bs4

fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML2.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')

#清單標題
objtag = objsoup.find('h2')
print(objtag)
print(objtag.text)

print("="*100)
#清單內容
objitem = objsoup.find('ol')
print(objitem)

items = objitem.find_all('li')
print(items)

for data in items:
    print(data.text)
    
print("="*100)
#最終成品
print(objtag.text)
for data in items:
    print(data.text)
#爬取表格文件
#請將C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改為bs4_HTML3.html在您電腦中的路徑
import bs4

fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML3.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')


objtable = objsoup.find_all('tr')
print(objtable)

print("="*100)

for data in objtable:
    print(data.text)
#爬取表格文件2.0
#請將C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改為bs4_HTML3.html在您電腦中的路徑
import bs4

fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML3.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')

tableobj = objsoup.find_all('tr')
print(tableobj)

print("="*100)
#改良
classification = [] #科學分類
name = [] #類別名稱

for data in tableobj[1:]:
    content = data.find_all('td')
    print(content)
    classification.append(content[0].text)
    name.append(content[1].text)

print("="*100)
#列印出兩串列
print(classification)
print(name)

print("="*100)
#最終成品
table = dict(zip(classification, name))
print(table)
#雙贏彩開獎號碼
import requests, bs4 

url = "https://www.taiwanlottery.com.tw/index_new.aspx"
htmlfile = requests.get(url)

objsoup = bs4.BeautifulSoup(htmlfile.text, 'lxml') 
doublewin = objsoup.find(class_ = 'contents_box06')
print(doublewin)

print("="*120)

#提取開獎號碼
balls = doublewin.find_all(class_='ball_tx ball_blue')
print(balls)

order_1 = [] #開出順序
order_2 = [] #大小順序

for ball in balls:
    if len(order_1) < 12:
        order_1.append(ball.text)
    else:
        order_2.append(ball.text)
        
print("="*120)
        
#最終成果
time = doublewin.find('span')
print(time.text)
print("開出順序", order_1)   
print("大小順序", order_2)

本篇影片及程式碼僅提供研究使用,請勿大量惡意地爬取資料造成對方網頁的負擔呦!
如果在影片中有說得不太清楚或錯誤的地方,歡迎留言告訴我,謝謝您的指教。


上一篇
Day 20 BeautifulSoup模組二
下一篇
Day 22 Selenium模組一
系列文
文組生的Python爬蟲之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言